// utils/navigate.js
import { base64Encode } from './base64'; // 引入 Base64 工具
import { logger } from './util';

/**
 * 自定义跳转方法封装
 * @param {Object} options - 跳转参数
 * @param {string} options.url - 目标页面 URL
 * @param {Object} options.params - 传递的参数
 */
export function customNavigate(options) {
  const { url, params, ...rest } = options;

  if (!url) {
    logger.error('跳转失败：未指定目标页面 URL');
    return;
  }

  try {
    // 处理 params，高效封装 URL 参数
    const encodedParams =
      params && typeof params === 'object' && Object.keys(params).length > 0
        ? base64Encode(JSON.stringify(params))
        : ''; // 如果没有参数，则留空
    const finalUrl = encodedParams
      ? `${url}?params=${encodedParams}` // 拼接参数到 URL
      : url;


    // 调用 wx.navigateTo
    wx.navigateTo({
      url: finalUrl,
      ...rest,
    });
  } catch (error) {
    logger.error('navigateTo 参数处理异常:', error);
  }
}


/**
 * 自定义跳转方法封装
 * @param {Object} options - 跳转参数
 * @param {string} options.url - 目标页面 URL
 * @param {Object} options.params - 传递的参数
 */
export function customRedirect(options) {
    const { url, params, ...rest } = options;
  
    if (!url) {
      logger.error('跳转失败：未指定目标页面 URL');
      return;
    }
  
    try {
      // 处理 params，高效封装 URL 参数
      const encodedParams =
        params && typeof params === 'object' && Object.keys(params).length > 0
          ? base64Encode(JSON.stringify(params))
          : ''; // 如果没有参数，则留空
      const finalUrl = encodedParams
        ? `${url}?params=${encodedParams}` // 拼接参数到 URL
        : url;
  
  
      // 调用 wx.navigateTo
      wx.redirectTo({
        url: finalUrl,
        ...rest,
      });
    } catch (error) {
      logger.error('redirectTo 参数处理异常:', error);
    }
  }